from openpyxl import load_workbook
import smtplib
from email.mime.text import MIMEText
from email.header import Header


# 1.设置发送邮件的服务器，登录
smtp_obj = smtplib.SMTP_SSL('smtp.163.com', '465')  # 使用网易163邮箱 465是服务器端口
smtp_obj.login('15239889618@163.com', 'DMmYK4Xp3nWhgLrK')  # 你的邮箱 这里的密码是授权码

# 2.加载excel文件
wb = load_workbook('员工工资条.xlsx')
sheet = wb.active

# 生成邮件内容：表格中的标题（thead_str）
thead_str = ""
for row in sheet.iter_rows(max_row=1):
    for cell in row:
        thead_str += f"<td>{cell.value}</td>"

# 3.循环给每个人发邮件
for row in sheet.iter_rows(min_row=2, max_row=3):
    staff_name = row[2].value  # 拿到员工姓名
    staff_email = row[1].value  # 拿到员工邮箱

    # 生成邮件内容：表格中的数据（tbody_str）
    tbody_str = "<tr>"
    for cell in row:
        tbody_str += f"<td>{cell.value}</td>"
    tbody_str += "</tr>"

    # a.构建邮件正文
    mail_body = f"""
    <table>
        <h1>发工资啦，请查收</h1>
        <table border="1px">
        <thead>
        <tr>
            {thead_str}
        </tr>
        </thead>
        <tbody>
            {tbody_str}
        </tbody>
    </table>
    """

    # b.构建邮件
    msg = MIMEText(mail_body, 'html', 'utf-8')  # 设置邮件内容 参数：邮件内容，文本格式，编码格式
    msg["From"] = Header('15239889618@163.com')  # 设置发送者邮箱
    msg["To"] = Header(staff_email)  # 设置收件者邮箱
    msg["Subject"] = Header("发工资啦", "utf-8")  # 设置邮件主题

    # c.发送
    smtp_obj.sendmail('15239889618@163.com', [staff_email,], msg.as_string())  # 发送者邮箱 接收者邮箱列表 固定参数
    print(f"给{staff_name}发送邮件成功！")
